﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Collections;
using CLab.Common.Objects;

namespace CLab.Controls
{
    public partial class Estudio : System.Web.UI.UserControl
    {
        #region Propiedades
        /// <summary>
        /// Control integrado updatepanel
        /// </summary>
        public UpdatePanel up
        {
            get { return updce; }
            set { updce = value; }
        }

        public int IdEstudio
        {
            get { return Common.Util.Convert.ToNInt(ViewState["IdEstudio"]).GetValueOrDefault(0); }
            set { ViewState["IdEstudio"] = value; }
        }

        public int? IdResultado
        {
            get { return Common.Util.Convert.ToNInt(ViewState["IdResultado"]); }
            set { ViewState["IdResultado"] = value; }
        }

        public Laboratorio SessionLaboratorio
        {
            get
            {
                if (Session["Laboratorio"] == null)
                {
                    Session["Laboratorio"] = new Laboratorio();
                }

                return (Laboratorio)Session["Laboratorio"];
            }
            set
            {
                Session["Laboratorio"] = value;
            }
        }
        #endregion

        #region Eventos
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        #endregion

        #region Metodos publicos
        /// <summary>
        /// Actualiza el updatepanel
        /// </summary>
        public void Update()
        {
            updce.Update();
        }

        /// <summary>
        /// Carga el estudio
        /// </summary>
        public override void DataBind()
        {
            rpt.DataSource = getEstudios();
            rpt.DataBind();
            updce.Update();
        }

        public string ClassText(object idTipoCampo)
        {
            string clase = "hidden";
            switch (Common.Util.Convert.ToNInt(idTipoCampo).GetValueOrDefault(0))
            {
                case 4:
                    clase = "show";
                    break;
            }

            return clase;
        }

        public string ClassTextLong(object idTipoCampo)
        {
            string clase = "hidden";
            switch (Common.Util.Convert.ToNInt(idTipoCampo).GetValueOrDefault(0))
            {
                case 3:
                    clase = "show";
                    break;
            }
            return clase;
        }

        public string ClassNumeric(object idTipoCampo)
        {
            string clase = "hidden";
            switch (Common.Util.Convert.ToNInt(idTipoCampo).GetValueOrDefault(0))
            {
                case 1:
                    clase = "show";
                    break;
            }

            return clase;
        }

        public string ClassDecimal(object idTipoCampo)
        {
            string clase = "hidden";
            switch (Common.Util.Convert.ToNInt(idTipoCampo).GetValueOrDefault(0))
            {
                case 2:
                    clase = "show";
                    break;
            }

            return clase;
        }

        public string ClassList(object idTipoCampo)
        {
            string clase = "hidden";
            switch (Common.Util.Convert.ToNInt(idTipoCampo).GetValueOrDefault(0))
            {
                case 5:
                    clase = "show";
                    break;
            }

            return clase;
        }

        public string ClassTitle(object idTipoCampo)
        {
            string clase = "hidden";
            switch (Common.Util.Convert.ToNInt(idTipoCampo).GetValueOrDefault(0))
            {
                case 6:
                    clase = "show";
                    break;
            }

            return clase;
        }
        #endregion

        #region Metodos privados
        private DataTable getEstudios()
        {
            ArrayList parametros = new ArrayList();
            ConsultaServiceReference.ConsultaServiceClient servicio = new ConsultaServiceReference.ConsultaServiceClient();
            //Parametros
            parametros.Add(CreaParametroConsulta("@pnIdEstudio", IdEstudio, ConsultaServiceReference.Parameter.vEnumType.VarChar));
            parametros.Add(CreaParametroConsulta("@pnIdLaboratorio", SessionLaboratorio.IdLaboratorio, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdSucursal", SessionLaboratorio.IdSucursal, ConsultaServiceReference.Parameter.vEnumType.Int));
            parametros.Add(CreaParametroConsulta("@pnIdResultado", IdResultado, ConsultaServiceReference.Parameter.vEnumType.Int));
            ConsultaServiceReference.Parameter[] prms = new ConsultaServiceReference.Parameter[parametros.Count];
            parametros.CopyTo(prms);
            //Ejecuta conulta
            return servicio.EjecutaConsultaConParametros("spObtenEstudioCaptura", prms).Tables[1];
        }

        private ConsultaServiceReference.Parameter CreaParametroConsulta(string _nombreParametro, object _valor, ConsultaServiceReference.Parameter.vEnumType _type)
        {
            ConsultaServiceReference.Parameter p = new ConsultaServiceReference.Parameter();
            p.nombreParametro = _nombreParametro;
            p.valor = _valor;
            p.type = _type;

            return p;
        }
        #endregion
    }
}